DATA SEGMENT
    
DATA ENDS

EXTRA SEGMENT
    ;########画方形宏########
    ;参数：DW ROW,DW COL,DB CHAR,DB BG_COLOR
    ;功能在(COL,ROW)位置画一个正方形，左边显示相应字符
    DRAW_SQUARE MACRO ROW,COL,CHAR,BG_COLOR
        ;保存信息
        PUSH AX
        PUSH BX
        PUSH CX
        PUSH DX
        ;移动光标
        MOV AH,2
        MOV BH,0
        MOV DH,ROW
        MOV DL,COL
        INT 10H
        ;连续打印两个字符，第一个为CHAR，第二个为' '
        ;打印CHAR
        mov ah,09h
        mov al,CHAR   ;显示的字符
        mov cx,1    ;字符显示数量
        mov bl,BG_COLOR ;字符颜色信息
        mov bh,00  ;页码设置
        int 10h    ;打印字符
         ;移动光标
        MOV AH,2
        MOV BH,0
        MOV DH,ROW
        MOV DL,COL
        INC DL
        INT 10H
        ;打印' '
        mov ah,09h
        mov al,' '   ;显示的字符
        mov cx,1    ;字符显示数量
        mov bl,BG_COLOR ;字符颜色信息
        mov bh,00  ;页码设置
        int 10h    ;打印字符
        ;恢复信息
        POP DX
        POP CX
        POP BX
        POP AX
    ENDM
EXTRA ENDS

CODE SEGMENT
    ASSUME CS:CODE,DS:DATA,ES:EXTRA
START:MOV AX,DATA
      MOV DS,AX
      MOV AX,EXTRA
      MOV ES,AX

      MOV AH,0
      MOV AL,03H  ;80*25 16色文本
      INT 10H
      ;完整调用
      
      ;
      DRAW_SQUARE 10,10,'1',00011111B
      DRAW_SQUARE 5,5,'8',00011111B
    HLT
CODE ENDS
      END START